#! /usr/bin/env python
# -*- coding:utf-8 -*-
# Author Jmz


# bin()      #返回一个整数 int 或者长整数 long int 的二进制表示。
print(bin(10))
# 0b1010
print(bin(2))
# 0b10


# bytearray()   # 方法返回一个新字节数组。这个数组里的元素是可变的，并且每个元素的值范围: 0 <= x < 256。
# class bytearray([source[, encoding[, errors]]])
print(bytearray([1,2,3]))
# bytearray(b'\x01\x02\x03')
print(bytearray('中国', 'utf-8'))
# bytearray(b'\xe4\xb8\xad\xe5\x9b\xbd')

# slice()   # 切片
arr = range(10)
print(arr[0:5:2])
print(arr[slice(None,5,2)])
# range(0, 5, 2)  两个都一样
print(arr[5])
# 5
print(arr[slice(5)])  # ==> slice(5)  == slice(None,5)
# range(0, 5)



# dir()    # 获取当前模块的属性列表。
print(dir())


# hex()   # 函数用于将10进制整数转换成16进制，以字符串形式表示
print(hex(10))
# 0xa
print(hex(1))
# 0x1
print(hex(16))
# 0x10


# hash()   # 用于获取取一个对象（字符串或者数值等）的哈希值。
print(hash('test'))
# -8237931458019123489
print(hash('dsjaidhadiaidhaishodiahodhaohdo'))
# -7824806465354315596
# print(hash([1,1,3]))    #  可变类型不可hash



# complex()  #函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串，则不需要指定第二个参数。。
# class complex([real[, imag]])
# real -- int, long, float或字符串；
# imag -- int, long, float；





# __import__()
# 函数用于动态加载类和函数 。
# 如果一个模块经常变化就可以使用 __import__() 来动态载入。

# 和Python import 导入模块用法相同
# import sys <==>sys = __import__('sys')。
# import作用:
# 导入/引入一个python标准模块，其中包括.py文件、带有__init__.py文件的目录




# compile()   # 函数将一个字符串编译为字节代码。
str = 'for i in range(10):print(i)'
c = compile(str,'','exec')
exec(c)
# 0
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9


# memoryview()  # 函数返回给定参数的内存查看对象(Momory view)
v = memoryview(bytearray("abcefg", 'utf-8'))
print(v[1])  # b
# 98
print(v[2])  # c
# 99

# round()  # 方法返回浮点数x的四舍五入值。 必须是数值
print(round(2.3))
# 2
print(round(3.6))
 #

# zip()  # 函数用于将可迭代的对象作为参数，将对象中对应的元素打包成一个个元组，然后返回由这些元组组成的列表
data = zip([1,2,3,4],['jmz','fff'])
print(data)  # <zip object at 0x000000000233E388> 迭代器
print(list(data))
# [(1, 'jmz'), (2, 'fff')]



# repr()  # 函数将对象转化为供解释器读取的形式。

# vars()    # 函数返回对象object的属性和属性值的字典对象。
class test:
    def __init__(self,name):
        self.name = name
    def set(self,name,value):
        self.name = value

print(test.__dict__)
print(vars(test))     # 两个一样
'''
 {'__module__': '__main__', '__init__': <function test.__init__ at 0x00000000024D99D8>, 
'set': <function test.set at 0x00000000024D9A60>, '__dict__': <attribute '__dict__' of 'test' objects>,
'__weakref__': <attribute '__weakref__' of 'test' objects>, '__doc__': None}
'''


# frozenset()   # 返回一个冻结的集合，冻结后集合不能再添加或删除任何元素。
a =frozenset(range(10))
print(a)
# frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
b = frozenset('runoob')
print(b)
# frozenset({'o', 'u', 'r', 'n', 'b'})



# divmod()  # 函数把除数和余数运算结果结合起来，
# divmod(a,b)
# a: 数字
# b: 数字
print(divmod(2,4))
# (0, 2)
print(divmod(5,4))
# (1, 1)
